角色要移動先得使用Input.GetAxis或是Input.GetKeyDown來取得鍵盤輸入控制
利用改變座標或是物理作用來驅使角色移動
Input.GetAxis是取得Unity內輸入器設定的縱軸設定和橫軸設定來判斷
Input.GetKeyDown是自己設定對應的KeyCode來判斷
待更
座標位移 transform.position
if (Input.GetKeyDown(KeyCode.D)) {
this.gameObject.transform.position += new Vector3(5, 0, 0);
}
待更
if (Input.GetKeyDown(KeyCode.A)) {
transform.Translate(-5, 0, 0);
}
Vector2 moveInput = new Vector2(Input.GetAxis("Horizontal"), Input.GetAxis("Vertical"));
moveVelocity = moveInput.normalized * speed;
使用velocity給物體直接改變速度
rigid2D.velocity = new Vector2(speed_x_constraint, rigid2D.velocity.y);
使用AddForce時會受到物體質量影響反映初速度移動的快慢
if (Input.GetKeyDown(KeyCode.D))
{
rigid2D.AddForce(new Vector2(0, 200), ForceMode2D.force);//加速度推動
}
else if (Input.GetKeyDown(KeyCode.A))
{
rigid2D.AddForce(new Vector2(0, -200), ForceMode2D.Impulse);//瞬間衝力
}
待更
參考資料
https://docs.unity3d.com/ScriptReference/Input.GetAxis.html
https://docs.unity3d.com/ScriptReference/Input.GetKeyDown.html
https://greenbeansplay.com/unity-role-move-collider-transform-rigidbody/
https://www.youtube.com/watch?v=_LdnD8zN5OU